package com.ai.bitcoin.serialize;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONUtils;
import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author Jason
 * @date 2018/3/27
 **/
public class BeanSerial {
    public static JSONArray list2JsonArray(List list) {
        if (null == list || list.size() == 0)
            return null;
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
        JSONArray jsonArray = new JSONArray();
        return jsonArray.fromObject(list, jsonConfig);
    }

    public static JSONObject Bean2Json(Object o) {
        if (null == o)
            return null;
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
        jsonConfig.registerJsonValueProcessor(Float.class, new JsonDateValueProcessor());
        JSONObject jsonObject = new JSONObject();
        return jsonObject.fromObject(o, jsonConfig);
    }

    public static <T> T JsonToBean(Class<T> clazz, String JsonString) {
        JSONUtils.getMorpherRegistry().registerMorpher(
                new DateMorpher(new String[]{"yyyy-MM-dd HH:mm:ss",
                        "yyyy-MM-dd", "yyyy-MM-dd't'HH:mm:ss"}));
        JSONObject jsonObject = JSONObject.fromObject(JsonString);
        T entity = (T) JSONObject.toBean(jsonObject, clazz);
        return entity;
    }

    public static void main(String args[]) {
        String format = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        System.out.println(simpleDateFormat.format(new Date()));
    }
}
